package com.javagi.test.sort;

/**
 * @Description 快速排序
 *  每次选择一个数作为标准，然后比它大的放在右边，比它小的放在左边
 *  通过上面的操作，把数组分成两份，然后每份继续重复这样的操作，直到排序好
 *  注意： 1.为了方便，这个标准数，每次取第一个数
 *        2.当左边长度是1的时候就是排序好了，同理左边也是
 * @Author kuiwang
 * @Date 2020/5/29 17:59
 * @Version 1.0
 */
public class QuickSort {
    public static void main(String[] args) {
        int arr[] = {1,0,4,5,3};

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    public static void quickSort(int arr[], int left, int right){
        int temLeft = left;
        int temRight = right;
        int curIndex = arr[left];

        while (left < right) {
            while (arr[right] >= curIndex && right > left) {
                right--;
            }
            arr[left] = arr[right];

            while (arr[left] < curIndex && right > left) {
                left++;
            }
            arr[right] = arr[left];
        }
        arr[left] = curIndex;
        if (left - temLeft > 1) {
            quickSort(arr, temLeft, left-1);
        }
        if (temRight - left > 0){
            quickSort(arr,left+1,temRight);
        }
    }



















}